package cqrtplm.controller.thirdPartyAPI;

import cqrtplm.constant.RouteConstant;
import cqrtplm.dto.CustomerPowerRecordModel;
import cqrtplm.dto.query.CrmApiQueryDTO;
import cqrtplm.dto.query.CustomerQueryDTO;
import cqrtplm.service.CrmApiService;
import cqrtplm.vo.CrmApiResponseVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * @description: crm系统接口API入口
 * @author: zhengxiong.jiang
 * @createDate: 2025-07-21
 * @version: 1.0
 */
@RestController
@RequestMapping(RouteConstant.CRMAPI + "v1")
public class CrmApiController {

    @Autowired
    private CrmApiService crmApiService;

    /**
     * 客户编码下拉接口
     * @param queryDTO
     * @return
     */
    @PostMapping("/getClientCodeList")
    public CrmApiResponseVO getClientCodeList(@RequestBody CrmApiQueryDTO queryDTO) {
        return crmApiService.getClientCodeList(queryDTO);
    }

    /**
     * CRM订单查询接口
     * @param queryDTO
     * @return
     */
    @PostMapping("/getCRMOrderList")
    public CrmApiResponseVO getCRMOrderList(@RequestBody CrmApiQueryDTO queryDTO) {
        CrmApiResponseVO crmOrderList = crmApiService.getCRMOrderList(queryDTO);
        return crmOrderList;
    }

    /**
     * CRM客户机型查询接口
     * @param queryDTO
     * @return
     */
    @PostMapping("/getClientModelList")
    public CrmApiResponseVO getClientModelList(@RequestBody CrmApiQueryDTO queryDTO) {
        CrmApiResponseVO crmOrderList = crmApiService.getClientModelList(queryDTO);
        return crmOrderList;
    }

    /**
     * 客户备案机型下拉接口
     * @param queryDTO
     * @return
     */
    @PostMapping("/getCustomerPowerRecordModels")
    public List<CustomerPowerRecordModel> getCustomerPowerRecordModels(@RequestBody CustomerQueryDTO queryDTO) {
        List<CustomerPowerRecordModel> list = crmApiService.getCustomerPowerRecordModels(queryDTO);
        return list;
    }

    /**
     * 样机类型下拉接口
     * @param
     * @return
     */
    @GetMapping("/getSysItemDetailList")
    public CrmApiResponseVO getSysItemDetailList() {
        CrmApiResponseVO crmApiResponseVO = crmApiService.getSysItemDetailList();
        return crmApiResponseVO;
    }

    /**
     * 给需求状态表创建底层对象 todo 临时使用创建完之后可将此方法删除  导入数据之前要把subtype替换为最新的值
     * @param
     * @return
     */
    @PostMapping("/buildXqzt")
    public String buildXqzt() {
        crmApiService.buildXqzt();
        return "1";
    }


    /**
     * 创建需求状态模板  todo 临时使用创建完之后可将此方法删除   执行此方法之前 优先执行需求状态表的导入 因为需要导入数据之后统一修改moduleid的数值
     * 测试接口
     * @param
     * @return
     */
    @PostMapping("/createDemandStatusTemplate")
    public String createDemandStatusTemplate() {
        crmApiService.createDemandStatusTemplate();
        return "1";
    }

    /**
     * 创建需求状态模板 与 产品型谱的关联  todo 临时使用创建完之后可将此方法删除   执行此方法之前 优先执行需求状态表的导入 因为需要导入数据之后统一修改moduleid的数值
     * 测试接口
     * @param
     * @return
     */
    @PostMapping("/relationship")
    public String relationship() {
        crmApiService.relationship();
        return "1";
    }

    /**
     * 将历史版本的机型负责人 导入到产品型谱中 从DSPF_STATUS_MODULE主表中导入  todo 临时使用创建完之后可将此方法删除   执行此方法之前 确保产品型谱已经建立成功 并扩展属性机型负责人已添加
     * 测试接口
     * @param
     * @return
     */
    @PostMapping("/relationshipProductTypeManName")
    public String relationshipProductTypeManName() {
        crmApiService.relationshipProductTypeManName();
        return "1";
    }



}
